#include "recboxitem.h"
#include "ui_recboxitem.h"
#include <QString>

RecBoxItem::RecBoxItem(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::RecBoxItem)
{
    ui->setupUi(this);

    // 注意：不要忘记事件拦截器安装，否则事件拦截不到，因此需要在构造函数中添加：
    // 拦截事件处理器时，⼀定要安装事件拦截器
    ui->musicImageBox->installEventFilter(this);

    // 设置动画
    animation = new QPropertyAnimation(ui->musicImageBox, "geometry");
    animation->setDuration(150);
}

bool RecBoxItem::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->musicImageBox){ // 聚焦到当前图片
        int h = ui->musicImageBox->height(), w = ui->musicImageBox->width();
        if(QEvent::Enter == event->type()){
            animation->setStartValue(QRect(0, 10, w, h));
            animation->setEndValue(QRect(0, 0, w, h));
            animation->start();

            // connect(animation, &QPropertyAnimation::finished, this, [=](){
            //     delete animation;
            // });
        }
        else if(QEvent::Leave == event->type()){
            animation->setStartValue(QRect(0, 0, w, h));
            animation->setEndValue(QRect(0, 10, w, h));
            animation->start();
        }
        return true;
    }
    return QObject::eventFilter(watched, event);
}

void RecBoxItem::setText(const QString &text){
    ui->recBoxItemText->setText(text);
    // QString style = QString(
    //                     "color: #F3F6F9;"
    //                     "font-size: 13px;"
    //                     "font-weight: bold;"
    //                     "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1,"
    //                     "stop:0 rgba(%1, %2, %3, 255), stop:1 rgba(%1 + 10, %2 + 7, %3 + 8, 100));"
    //                     ).arg(r).arg(g).arg(b);
    // ui->recBoxItemText->setStyleSheet(style);
}

void RecBoxItem::setImage(const QString& Imagepath){
    QString imgStyle = QString("background-image: url(%1);").arg(Imagepath);
    qDebug() << imgStyle;
    ui->recMusicImage->setStyleSheet(imgStyle);

    // QPixmap originalPixmap(Imagepath); // 加载图片

    // // 检查图片是否加载成功（可选）
    // if (originalPixmap.isNull()) {
    //     qDebug() << "Failed to load icon:" << Imagepath;
    //     return;
    // }

    // // 缩放图片为 10x10 像素，使用平滑插值算法
    // QPixmap scaledPixmap = originalPixmap.scaled(
    //     150, 150,                   // 目标宽度和高度
    //     Qt::IgnoreAspectRatio,    // 忽略宽高比（强制缩放为 10x10）
    //     Qt::SmoothTransformation  // 使用平滑插值算法
    //     );
    // ui->recMusicImage->setPixmap(scaledPixmap);
}

RecBoxItem::~RecBoxItem()
{
    delete ui;
}
